 
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.zaxxer.hikari.HikariDataSource;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
/**
 * @author ***
 * @date 2023/11/09 0009 16:58
 */
public class Codegen {
    public static void main(String[] args) {
        //配置数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/flex_test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
 
        //创建配置内容，两种风格都可以。
        GlobalConfig globalConfig = createGlobalConfigUseStyle1();
        //通过 datasource 和 globalConfig 创建代码生成器
        Generator generator = new Generator(dataSource, globalConfig);
        //生成代码
        generator.generate();
    }
 
    public static GlobalConfig createGlobalConfigUseStyle1() {
        //创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();
        //设置根包
        globalConfig.setBasePackage("com.dhcc");
        // 类doc注释
        globalConfig.getJavadocConfig()
                .setAuthor("weiyongpeng")
                .setSince(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
 
        // TableDef
        globalConfig.enableTableDef();
        // 覆盖旧文件
        globalConfig.setTableDefOverwriteEnable(true);
        globalConfig.getTableDefConfig()
                // 小写风格
                // .setPropertiesNameStyle(TableDefConfig.NameStyle.LOWER_CAMEL_CASE)
                .setClassSuffix("Domain");
 
        //指定生成account表
        globalConfig.setGenerateTable("tb_account");
 
        //entity 并启用 Lombok
        globalConfig.setEntityGenerateEnable(true);
        globalConfig.setEntityOverwriteEnable(true);
        globalConfig.setEntityWithLombok(true);
 
        // mapper
        globalConfig.setMapperGenerateEnable(true);
        // globalConfig.setMapperOverwriteEnable(true);
 
        //可以单独配置某个列
        // ColumnConfig columnConfig = new ColumnConfig();
        // columnConfig.setColumnName("money");
        // // 乐观锁字段
        // columnConfig.setVersion(true);
        // // 类型
        // columnConfig.setPropertyType("java.math.BigDecimal");
        // globalConfig.setColumnConfig("account", columnConfig);
 
        // xml
        globalConfig.enableMapperXml();
        // globalConfig.setMapperXmlOverwriteEnable(true);
        return globalConfig;
    }
}